\section{Dise\~no orientado a objetos}

\subsection{Diagramas de Clases}
Para explicar correctamente el funcionamiento de nuestra aplicaci\'on decidimos mostrar los siguientes diagramas de clases. Los casos donde se muestran clases sin mensajes se deben a que éstos están definidos en el diagrama correspondiente a la clase.

\begin{itemize}
	\item Diagrama de clases global: En este diagrama mostramos todas las clases involucradas y las dependencias. En el mismo no se muestran mensajes ya que el objetivo es tener un panorama global.
	
	\item Diagrama de clases de la interfaz: La interfaz en el nexo entre el usuario y la aplicación. Por medio de ésta, el usuario puede seleccionar productos pertenecientes al catálogo que luego serán buscados por el buscador, el cual es un colaborador interno de la clase.
	
	\item Diagrama de clases del Buscador: El buscador es el responsable de realizar la búsqueda de los productos seleccionados, y crear los resultados que luego serán mostrados en pantalla por la clase Interfaz. El Buscador conoce al Catálogo de productos. Además crea instancias de la clase ProcesadorDeTweets. La clase del Resultado tambi\'en se muestra en este diagrama.

	\item Diagrama de clases del Catálogo de Productos: El catálogo de productos conoce a los productos que lo componen. Es inmutable, por lo que todos sus productos deben ser provistos en el momento de su creación. En este diagrama tambi\'en se muestra la clase Producto, compuesta por un nombre y una unidad de medida.
		
	\item Diagrama de clases del Procesador De Tweets: Este es el responsable de tomar los Tweets y crear un DatosDeCompra a partir de la información útil extraída. Crea instancias de Precio y Ubicación.
	
	\item Diagrama de clases DatoDeCompra: Se modela la clase DatoDeCompra que representa la separaci\'on de la informaci\'on que trae un tweet en producto, precio y dirección.
El Dato de Compra es inmutable y tiene como colaboradores un Producto, un Precio y una Ubicacion. 

	\item Diagrama de clases Encargado de comunicarse con Twitter y Tweet: El ProxyDeTwitter es el responsable de solicitar los tweets a Twitter y dados ciertos términos, obtener un listado de tweets que los mencionen.



\end{itemize}


\begin{figure}
\centering
\includegraphics[scale=0.55,angle=90]{img/Diagramadeclasesglobal.png}
\caption{Diagrama de clases global}
\label{fig:figure1}
\end{figure}

\begin{figure}
\centering
\includegraphics[scale=0.40]{img/Diagramadeclases-Interfazdeusuario.png}
\caption{Diagrama de clases de la Interfaz}
\label{fig:figure1}
\end{figure}

\begin{figure}
\centering
\includegraphics{img/diagramaClasesBusqueda.png}
\caption{Diagrama de clases del Buscador y del Resultado}
\label{fig:figure1}
\end{figure}

\begin{figure}
\centering
\includegraphics[scale=0.90]{img/Diagramadeclases-Catalogodeproductos.png}
\caption{Diagrama de clases del CatalogoDeProductos y del Producto}
\label{fig:figure1}
\end{figure}

\begin{figure}
\centering
\includegraphics{img/DiagramadeClases-ProcesadordeTweets.png}
\caption{Diagrama de clases ProcesadorDeTweets}
\label{fig:figure1}
\end{figure}

\begin{figure}
\centering
\includegraphics{img/DiagramadeClases-DatodeCompra.png}
\caption{Diagrama de clases de DatoDeCompra}
\label{fig:figure1}
\end{figure}

\begin{figure}
\centering
\includegraphics[scale=0.50]{img/diagramaClasesTweetyProxy.png}
\caption{Diagrama de clases del responsable de comunicarse con Twitter y del Tweet}
\label{fig:figure1}
\end{figure}

\newpage
\subsection{Diagramas de Secuencia}
A continuación, utilizaremos diagramas de secuencia con el objetivo de describir el comportamiento de algunas funciones de nuestro sistema. En particular, elegimos aquellas funciones que representan al núcleo de la lógica interna del sistema.\\

\underline{Escenario}: \textit{En este primer diagrama, representaremos la situación en la cual estamos realizando la búsqueda del producto \textit{Tomates}, para el cual solo encontraremos un único dato de compra relevante. A partir de este último, generaremos el resultado y finalmente mostraremos por pantalla los datos correspondientes.}

\begin{figure}[ht]
\centering
\includegraphics[width=0.9\textwidth, angle=90]{img/DiagramaDeSecuencia-buscarProductosSeleccionados.png}
\caption{Diagrama de Secuencia - buscarProductosSeleccionados}
\label{fig:figure1}
\end{figure}

\newpage
\underline{Escenario}: \textit{En este segundo diagrama, analizaremos en mayor profundidad el mensaje utilizado en el diagrama anterior para obtener los datos de compra que hacen referencia al producto buscado. En particular, simularemos que seguimos bajo la misma búsqueda del producto \textit{Tomates} y que encontraremos dos Tweets que hacen mención a dicho producto con el hashtag \#precioJusto. Estos serán procesados, obteniendo finalmente un solo dato de compra relevante para nuestra búsqueda.}

\begin{figure}[ht]
\centering
\includegraphics[width=0.9\textwidth, angle=90]{img/DiagramaDeSecuencia-obtenerDatosDeCompraPara.png}
\caption{DiagramaDeSecuencia-obtenerDatosDeCompraPara}
\label{fig:figure1}
\end{figure}

\newpage
\underline{Escenario}:\textit{Finalmente en este diagrama, analizaremos el modo en que se procesan los diferentes Tweets a partir de los cuales se generan los datos de compra. Siguiendo la misma linea de los diagramas anteriores, simularemos la situación en la cual estamos buscando información sobre el producto \textit{Tomates} dentro de un determinado conjunto de Tweets. Dentro de dicho conjunto habrá un Tweet con informacion útil y otro que será descartado. En consecuencia, obtendremos finalmente solo un dato de compra.}

\begin{figure}[ht]
\centering
\includegraphics[width=0.9\textwidth, angle=90]{img/DiagramaDeSecuencia-procesarTweets.png}
\caption{DiagramaDeSecuencia-procesarTweets}
\label{fig:figure1}
\end{figure}

\newpage
